﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Input;
using Entidades;
using LogicaNegocio;

namespace PresentacionEscritorio
{
    public partial class FormMedico : Form
    {
        frmMdiContainer myMdi;
        public string nombreUsuarioLogueado { get; set; }
        public int idUsuarioLogueado { get; set; }
        private GestorMedicos gm = new GestorMedicos();
        private Medico medicoLogueado = new Medico();

        private bool yaLlameAcerrarSesion;

        public FormMedico()
        {
            InitializeComponent();
        }

        private void FormMedico_Load(object sender, EventArgs e)
        {
            yaLlameAcerrarSesion = false;
            this.Text = "TodoSalud - Médico de consultorio: " + nombreUsuarioLogueado;
            obtenerMedico(idUsuarioLogueado);
            myMdi = new frmMdiContainer();
            myMdi.tipoFormPadre = 2;
            myMdi.idUsuarioLogueado = idUsuarioLogueado;
            myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
            myMdi.Owner = this;
        }
        private void obtenerMedico(long idUsuario)
        {
            medicoLogueado = gm.obtenerDatosPersonalesXIdUSuario(1);
        }

        #region MenuContextMisPacientes

        private void toolStripMenuItem4_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmConsultarPacientesPorMedico formConsPac = new frmConsultarPacientesPorMedico();
            formConsPac.MdiParent = myMdi;
            //formConsPac.setOpcion(Opcion.OpConsultar);
            formConsPac.oM = medicoLogueado;
            idUsuarioLogueado = 1;
            formConsPac.oM.UsuarioMedico = new Usuario();
            formConsPac.oM.UsuarioMedico.CodUsuario = idUsuarioLogueado;
            formConsPac.cargarMedico();
            formConsPac.establecerTipoModalidadDeAtencion();

            formConsPac.Show();
            myMdi.Show();
        }

        private void registrarHistoriaClinicaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmRegistrarHistoriaClinica formRegHC = new frmRegistrarHistoriaClinica();
            formRegHC.MdiParent = myMdi;
            //formRegHC.setOpcion(Opcion.OpConsultar);
            formRegHC.Show();
            myMdi.Show();
        }

        //contexto, Para que el boton se abra en la posicion del mouse
        private void btnPacientes_Click(object sender, EventArgs e)
        {
            Point p = PointToClient(MousePosition);

            contexMenuMisPacientes.Show(this, p);
        }

        #endregion

        #region MenuContextMiAgenda
        private void agendaDelDiaToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmAgendaDelDia formAgDia = new frmAgendaDelDia();
            formAgDia.MdiParent = myMdi;
            formAgDia.oM = medicoLogueado;
            //formAgDia.setOpcion(Opcion.OpConsultar);
            formAgDia.Show();
            myMdi.Show();
        }

        private void agendaPlanificadaToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmAgendaPlanificada formAgPlan = new frmAgendaPlanificada();
            formAgPlan.oM = medicoLogueado;

            formAgPlan.MdiParent = myMdi;
            //formAgPlan.setOpcion(Opcion.OpConsultar);
            formAgPlan.Show();
            myMdi.Show();
        }

        private void btnTurnos_Click(object sender, EventArgs e)
        {
            Point p = PointToClient(MousePosition);
            contextMenuMiAgenda.Show(this, p);
        }
        #endregion

        #region MenuContextMisCobros
        private void atencionesRealizadasToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmAtencionesRealizadas formAt = new frmAtencionesRealizadas();
            formAt.oM = medicoLogueado;
            formAt.MdiParent = myMdi;
            //formAt.setOpcion(Opcion.OpConsultar);
            formAt.Show();
            myMdi.Show();
        }

        private void btnCobros_Click(object sender, EventArgs e)
        {
            Point p = PointToClient(MousePosition);
            contextMenuMisCobros.Show(this, p);
        }


        #endregion

        #region MenuContextMisDatos
        private void datosPersonalesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmDatosPersonales formDatosPers = new frmDatosPersonales();
            formDatosPers.MdiParent = myMdi;
            //formDatosPers.setOpcion(Opcion.OpConsultar);
            formDatosPers.idusuario = idUsuarioLogueado;
            formDatosPers.Show();
            myMdi.Show();
        }

        private void misEspecialidadesToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmEspecialidadesMedicoLogueado formEsp = new frmEspecialidadesMedicoLogueado();
            formEsp.MdiParent = myMdi;
            formEsp.oM = medicoLogueado;
            //formEsp.setOpcion(Opcion.OpConsultar);
            formEsp.Show();
            myMdi.Show();
        }

        private void btnMedicos_Click(object sender, EventArgs e)
        {
            Point p = PointToClient(MousePosition);
            contextMenuStripMisDatos.Show(this, p);
        }
        #endregion


        #region MenuMisDatos

        private void DatosMedicoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmDatosPersonales formDatosPers = new frmDatosPersonales();
            formDatosPers.MdiParent = myMdi;
            //formDatosPers.setOpcion(Opcion.OpConsultar);
            formDatosPers.Show();
            myMdi.Show();
        }

        private void MisEspecialidadesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmEspecialidadesMedicoLogueado formEsp = new frmEspecialidadesMedicoLogueado();
            formEsp.MdiParent = myMdi;
            //formEsp.setOpcion(Opcion.OpConsultar);
            formEsp.Show();
            myMdi.Show();
        }

        #endregion

        #region MenuAgenda
        private void AgendaDelDiaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmAgendaDelDia formAgDia = new frmAgendaDelDia();
            formAgDia.MdiParent = myMdi;
            //formAgDia.setOpcion(Opcion.OpConsultar);
            formAgDia.Show();
            myMdi.Show();
        }


        private void AgendaPlanificadaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmAgendaPlanificada formAgPlan = new frmAgendaPlanificada();
            formAgPlan.oM = medicoLogueado;

            formAgPlan.MdiParent = myMdi;
            //formAgPlan.setOpcion(Opcion.OpConsultar);
            formAgPlan.Show();
            myMdi.Show();
        }

        #endregion

        #region MenuCobros
        private void atencionesRealizadasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmAtencionesRealizadas formAt = new frmAtencionesRealizadas();
            formAt.MdiParent = myMdi;
            formAt.oM = medicoLogueado;
            //formAt.setOpcion(Opcion.OpConsultar);
            formAt.Show();
            myMdi.Show();
        }

        #endregion

        private void cerrarSesiónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show("¿Está seguro de que desea cerrar sesión y salir?", "Confirmación", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (dr == DialogResult.OK)
            {
                cerrarSesión();
            }
        }

        private void FormMedico_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!yaLlameAcerrarSesion)
            {
                DialogResult dr = MessageBox.Show("¿Está seguro de que desea cerrar sesión y salir?", "Confirmación", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (dr == DialogResult.OK)
                {
                    cerrarSesión();
                }
                else
                    e.Cancel = true;
            }
        }

        private void cerrarSesión()
        {
            GestorUsuarios gu = new GestorUsuarios();

            bool res = gu.cerrarSesion(idUsuarioLogueado);
            if (res)
            {
                yaLlameAcerrarSesion = true;
                Application.Exit();
            }
            else
            {
                MessageBox.Show("No se puede cerrar sesión");
            }
        }

        private void contextMenuMiAgenda_Opening(object sender, CancelEventArgs e)
        {

        }

        private void consultarInstituciónToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }
        //AGENDA DEL DIA
        private void altaDePacienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 2;
                myMdi.Owner = this;

            }
            frmAgendaDelDia formAgDia = new frmAgendaDelDia();
            formAgDia.MdiParent = myMdi;
            formAgDia.oM = medicoLogueado;
            //formAgDia.setOpcion(Opcion.OpConsultar);
            formAgDia.Show();
            myMdi.Show();

        }
        //AGENDA PLANIFICADA
        private void consultarPacientesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.tipoFormPadre = 2;
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.Owner = this;

            }
            frmAgendaPlanificada formAgPlan = new frmAgendaPlanificada();
            formAgPlan.oM = medicoLogueado;

            formAgPlan.MdiParent = myMdi;
            //formAgPlan.setOpcion(Opcion.OpConsultar);
            formAgPlan.Show();
            myMdi.Show();

        }

        private void menuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }




    }
}
